c库与Linux库io操作 |
您所在的位置:网站首页 › linux 查io › c库与Linux库io操作 |
1.打开文件 open 2. 通过read 将文件内容访问内存 通过write,将内存中改动的数据,存入文件 3.关闭文件 fclose 1) fgetc fputc fgetc: 从文件中读取#一个字符#到内存 ,它内部 使用了fread实现的. fputc : 将内存中的 单个字符,写会到 文件中. #include int fgetc(FILE *stream); stream: 文件指针 返回值: 是一个字符,被强转为了int EOF/-1: 表示出错/文件结束 2) fgets 从文件中获取一行数据 ,到内存 char *fgets(char *s, int size, FILE *stream); stream:文件指针 s: 存放文件内容的buf size:指的是 s空间的大小 返回值: NULL 读取结束 其他 成功 1).从文件fp中读取内存,遇到\n结束.在尾部追加\0 2).如果buf不够大,那么 最多读取bufsize-1个字符,最后一个空间被强加\0 下次fgets的时候,继续读取改行 3) fgets遇到 文件结束,停止工作. 文件的连续读和写,是如何实现的: 文件内部都有一个整数记录了 当前文件的访问位置. 一开始(open的时候)pos=0; fread fwrite函数都会修改改指针. 我们可否主动的调整 位置呢:答案是可以的 1) 获取当前文件位置记录的位置 pos = ftell(fp); 2)主动修改 文件位置记录的位置 fseek(fp,pos, relative-相对论); fopon他的返回值是指针,通过指针为null我们可以知道open失败 但是什么原因导致的失败啊??? 如何获取具体失败原因: int errno,它标示了具体的错误原因 printf("fopen err,errno:%d errdes:%s\n",errno, strerror(errno)); //errno他是全局变量,由编译器帮你添加,你可以直接使用 //系统的函数,比如fopen fread 会将具体错误原因 赋值给errno perror("fopen err"); /*errno 他是一个整数,标示了错误原因,但是 每次都查表,累 我们 char *strerror(errno) */ /* strerrno 需要配合printf 打印,太麻烦 perror("问题描述"); ---> printf("问题描述:%s\n",strerrno(errno)); */ ./mycp fsrc fdest 程序应该可以获取后面的参数, 后面的参数是字符串构成的一个数组 char *str[] = {"helo","good","night"}; 当你在中断输入命令 ./xx.out 111 222 333 4444 终端 会将 参数组合为一个 字符串数组 char *argv[] = {所有参数},交给程序xx.out int main(int argc,char * argv[]) { argc表示 数组的个数 argv表示字符串数组 argv[0] 程序本身 argv[1] == "1111" argv[2] == "2222" } 标准C库,是统一的,通用的. 我们基于标准IO写的代码,可以跑在不同的系统上. linux他没有使用标准C库,它提供glibc库,glibc包含了标准C库. 我们操作文件,可以使用标准IO(标准C库提供的接口) 也可以使用linux专用的接口(文件IO) . 标准IO 文件IO fopen open fread read fwrite write fclose close fseek lseek ftell 对比: 标准IO 通用性强 访问速度快(内存有个缓冲区) 文件IO linux专用 要慢一点 (直接访问物理文件)
## 其他文件操作接口#### 删除文件: #include int unlink(const char *pathname); 创建目录: #include #include int mkdir(const char *pathname, mode_t mode); pathname,你要创建的目录路径 mode,目录的权限 0660 返回值: -1 失败,errno 0-success 删除目录: #include int rmdir(const char *pathname); 返回值: -1: 失败 errno 0-success 查看目录: 获取目录中的内容(普通文件 + 子目录) 新概念, 目录DIR 文件FILE 目录项,他是 文件和目录的统称. 一个目录项,既可以是文件,也可以是 目录. opendir 打开一个目录 dir = opendir(目录路径) readdir 读取该目录的每一个内容(目录 + 文件),目录项 内容(目录,文件) = readdir(dir) closedir 关闭目录 closedir()
|
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |